#ifndef _MENSAJESIRC_H_
#define _MENSAJESIRC_H_

struct MensajeIRC{
    protected:
    char tipo[10];
    public:
    MensajeIRC(const char* tipo);
    virtual bool good();
};

struct MensajeIRC_USER:MensajeIRC{
    protected:
    char nombre[20];
    public:
    MensajeIRC_USER(const char* nombre_usuario);
    bool good();
};

struct MensajeIRC_JOIN:MensajeIRC{
    protected:
    char nombre_canal[20];
    public:
    MensajeIRC_JOIN(const char* nombre_canal);
    bool good();    
};

struct MensajeIRC_PRIVMSG:MensajeIRC{
    protected:
    char nombre_destino[20];
    char mensaje[100];
    public:
    MensajeIRC_PRIVMSG(const char* nombre_destino, const char* mensaje);
    bool good();
};

struct MensajeIRC_CONNECT:MensajeIRC{
    protected:
    char nombre_destino[20];
    int puerto;
    public:
    MensajeIRC_CONNECT(const char* nombre_destino, int puerto);
    bool good();
};

struct MensajeIRC_QUIT:MensajeIRC{
    protected:
    char mensaje[100];
    public:
    MensajeIRC_QUIT(const char* mensaje);
    bool good();
};

struct MensajeIRC_SQUIT:MensajeIRC{
    protected:
    char nombre[20];
    char comentario[30];
    public:
    MensajeIRC_SQUIT(const char* nombre, const char* comentario);
    bool good();
};

struct MensajeIRC_PING:MensajeIRC{
    protected:
    char server1[20];
    char server2[20];
    public:
    MensajeIRC_PING(const char* server1, const char* server2);
    bool good();
};

struct MensajeIRC_PONG:MensajeIRC_PING{
    public:
    MensajeIRC_PONG(const char* server1, const char* server2);
    bool good();
};

#endif /* _MENSAJESIRC_H_ */
